#include<bits/stdc++.h>
using namespace std;

int len,n,k;
int l=INT_MAX;
int stone[50005];

bool f(int mid){
	int sum=0,cur=0;
	int j=0;
	while(j<=n&&sum<=k){
		if(cur+stone[j+1]-stone[j]>=mid){
			cur=0;
		}
		else{
			cur+=stone[j+1]-stone[j];
			sum++;
		}
		j++;
	}
	if(sum<=k) return true;
	else return false;
}

int main(){
	scanf("%d%d%d",&len,&n,&k);
	stone[0]=0;
	for(int i=1;i<=n;i++){
		scanf("%d",&stone[i]);
		l=min(stone[i]-stone[i-1],l);
	};
	stone[n+1]=len;
	l=min(l,stone[n+1]-stone[n]);
	int r=len,mid;
	while(l<r){
		mid=(r-l)/2+l;
		//
		bool tag=f(mid);
		if(!tag){
			r=mid-1;
		}
		else{
			l=mid;
			if(r-l==1){
				bool tag2=f(l+1);
				if(tag2) l=r;
				else r=l;
			}
		}
	}
	printf("%d",l);
	return 0;
}
